/**
 * 自定义UI组件库
 * @author 姜友瑶
 * */

/**
 * 自动填充select中的option节点，改节点显示有树的形状 selectID select控件的di
 * options=[{ID:'213',PARENT_ID:'123123',NAME:'JYY',value:'213'},{{ID:'213',PARENT_ID:'123123',NAME:'JYY'}}]
 */

var MUI=function(){
	
	"use strict";// 严格模式
	
return {
		
	//全局常量 弹窗宽度
	 SIZE_S:'40%',
	 SIZE_L:'70%',
	 SIZE_M:['100%','100%'],
	 
	 /** 图片在上传的时候，需要在页面嵌套一个jspifram页面 页面处理完图片后服务器返回脚本代码控制父窗口显示图片。 */
	 upolad : function(img_id, file_id) {
	 	if ($("#" + file_id).val() == '') {
	 		layer.alert("请先选择要上传的文件！");
	 		return;
	 	}
	 	$("#" + img_id).attr("src", basePath + "/plat/images/loading.gif");
	 	$("#" + img_id).show();
	 },


	 /**
	  * 打开多图上传页面
	  * 
	  * @param fn
	  *            回调函数 {err:0,url:'http://12312!!!!.jpg'}
	  */
	 openMultipleUpload : function(fn) {
	 	KindEditor.ready(function(K) {
	 		var editor = K.editor({
	 			cssPath :basePath + '/resource/plugin/kindeditor/plugins/code/prettify.css',
	 			uploadJson :basePath + '/resource/plugin/kindeditor/uploadFile.jsp',
	 			fileManagerJson :basePath + '/resource/plugin/kindeditor/file_manager_json.jsp',
	 			allowFileManager : true
	 		});
	 		editor.loadPlugin('multiimage', function() {
	 			editor.plugin.multiImageDialog({
	 				clickFn : function(urlList) {
	 					fn(urlList);
	 					editor.hideDialog();
	 				}
	 			});
	 		});
	 	});
	 },

	 /**
	  * 打开远程图片空间
	  * 
	  * @param fn
	  *            回调函数 url:'http://12312!!!!.jpg'
	  *            event 触发开启事件源
	  */
	 openServiceImgSpace : function(fnn,event) {
	 	KindEditor.ready(function(K) {
	 		var editor = K.editor({
	 			fileManagerJson : basePath + '/resource/plugin/kindeditor/file_manager_json.jsp',
	 		});
	 		
	 		$(event).click(function(){
	 			
	 			editor.loadPlugin('filemanager', function() {
		 			editor.plugin.filemanagerDialog({
		 				viewType : 'VIEW',
		 				dirName : 'image',
		 				clickFn : function(url, title) {
		 					fnn(url);
		 					editor.hideDialog();
		 				}
		 			});
		 		});
	 		});
	 	});
	 },
	 /**
	  * 创建一个富文本编辑器
	  */
	 createEdit:function( name, width ,heigt ,editor ){
		 
		 KindEditor.ready(function(K) {
			window[editor]= K.create('textarea[name="'+name+'"]', {
					cssPath :  basePath + '/resource/plugin/kindeditor/plugins/code/prettify.css',
					uploadJson :  basePath + '/resource/plugin/kindeditor/uploadFile.jsp',
					fileManagerJson :  basePath + '/resource/plugin/kindeditor/file_manager_json.jsp',
					allowFileManager : true,
					width : width,
					height : heigt,
					afterCreate : function() {
						var self = this;
						K.ctrl(document, 13, function() {
							self.sync();
							document.forms['example'].submit();
						});
						K.ctrl(self.edit.doc, 13, function() {
							self.sync();
							document.forms['example'].submit();
						});
					}
				});
			prettyPrint();
			});
	 },

	//=========================================地区组件=======================================================
	/*******************************************************************************
	* 在指定的容器中添加一个地区选择组件
	*  @param boxId
	*/
	 setCityBox:function(boxId) {
		$.AjaxProxy({a:false}).invoke("SCOTT.V_ES_CODE_SERVICE.FINDALLDQ",function(loj){
			var html = "<select class='select select-box areaBox' onchange='MUI.changArea(this)'>" + "<option value='-1'>--选择省份--</option>";
			for (var i = 0; i < loj.getRowCount("P_RESULT"); i++) {
				html = html + '<option value=' + loj.getString("P_RESULT", i, "ID") + ' >' + loj.getString("P_RESULT", i, "NAME") + '</option>';
			}
			html += "</select>" 
					+"<select class='select select-box areaBox'  onchange='MUI.changArea(this)'>" + "<option value='-1' >--选择城市--</option></select>" 
					+"<select class='select select-box areaBox'>" + "<option value='-1' >--选择地区--</option>" + "</select>"
					+"<input class='input-text areaStreet' placeholder='请输入街道信息'  />";
			$("#" + boxId).empty().html(html);
		});
	},

	//改变地区选择
	 changArea:function(node) {
		var id = $(node).val();
		if (id == -1) {
			return;
		}
		$.AjaxProxy({p:[id],a:false}).invoke("SCOTT.V_ES_CODE_SERVICE.FINDDQ",function(loj) {
			var html = "<option value=-1>--选择地区--</option>";
			if ($(node).next().next().is('select')) {
				html = "<option value=-1>--选择城市--</option>";
				$(node).next().next().empty();
			}
			for (var i = 0; i < loj.getRowCount("P_RESULT"); i++) {
				html = html + '<option value=' + loj.getString("P_RESULT", i, "ID") + ' >'+loj.getString("P_RESULT", i, "NAME") + '</option>';
			}
			if (loj.getRowCount("P_RESULT") == 0) {
				html = '';
			}
			$(node).next().empty().html(html);
		});
	},

	//初始化地区
	 initdq:function(id) {
		$.AjaxProxy().invoke("SCOTT.V_ES_CODE_SERVICE.FINDALLDQ",function(loj){
			var html = "<option value='-1'>--选择省份--</option>";
			for (var i = 0; i < loj.getRowCount("P_RESULT"); i++) {
				html = html + '<option value=' + loj.getString("P_RESULT", i, "ID") + ' >'+ loj.getString("P_RESULT", i, "NAME") + '</option>';
			}
			$("#" + id).children().eq(0).html(html);
		});
	},

	//获取最后一次城市id
	 getAreaInfo:function(id) {
		var areaInfo="";
		$('#' + id).find("select").each(function(){
			areaInfo+=$(this).find("option:selected").text()+" "; 
		});
		areaInfo+=$('#' + id).find("input").val();
		return areaInfo;
	}
}
	
}();


//定义一些jquery UI插件
(function($) {
	
	$.fn.extend({
		
		createSelectTree : function(options, seting) {
			// 配置对象
			var _seting = {
				id : "id",		// 选项的值
				parent : "parentId",	// 父节点值
				value : "name",	// 要显示的名称
				append:false,	// 是否为追加 ，默认不追加
				defaultValue:null,  //默认选中值
				defaultHtml:"",  //默认option
			}
			var _seting = $.extend(_seting, seting);
			// 用每一个节点的id标识一个节点对象，这里是所有对象的map集合
			var _options = {};
			var nodeNength = options.length;
			for (var i = 0; i < nodeNength; i++) {
				// 用id来唯一标识这个节点
				_options[options[i][_seting.id]] = options[i];
			}
			// 构建树模型 root 是这课树的集合
			var root = {};
			root.children = [];
			for (var i = 0; i < nodeNength; i++) {
				var node = options[i];
				// _options中 如果存在 options 对应的 父节，把当前的节点放入父节点
				if (_options[node[_seting.parent]]) {
					var parent = _options[node[_seting.parent]];
					if (parent.children) {
						parent.children.push(_options[node[_seting.id]]);
					} else {
						parent.children = [];
						parent.children.push(_options[node[_seting.id]]);
					}
				} else {// 如果不存在父节点就放入根节点中
					root.children.push(_options[node[_seting.id]]);
				}
			}
			// 创建html代码加载到树当中
			var html = "";
			if(_seting.defaultHtml){
				html+=_seting.defaultHtml;
			}
			html += this.getOptionHtml(root.children, _seting, _options);
			
			if(_seting.append){
				$(this).html($(this).html()+html);
			}else{
				$(this).html(html);	
			}
			
			
		},
		getOptionHtml : function(children, _seting, _options) {
			if (children) {
				var length = children.length;
				var html = "";
				for (var i = 0; i < length; i++) {
					var node = children[i];
					var prefix = "| ";
					var count = 0;
					count += this.getParentCount(node, _seting, count, _options);
					for (var j = 0; j < count; j++) {
						prefix += " - ";
					}
					if(_seting.defaultValue && _seting.defaultValue==node[_seting.id] ){
						html += "<option selected='selected' value='" + node[_seting.id] + "' >" + prefix + node[_seting.value] + "</option>"
					}else{
						html += "<option value='" + node[_seting.id] + "' >" + prefix + node[_seting.value] + "</option>"
					}
					html += this.getOptionHtml(node.children, _seting, _options);
				}
				return html;
			} else {
				return "";
			}
		},
		// 获父节点数量
		getParentCount : function(node, _seting, count, _options) {
			var str = _options[node[_seting.parent]];
			if (str) {
				count++;
				return this.getParentCount(_options[node[_seting.parent]], _seting, count, _options);
			} else {
				return count;
			}
		}
	});

})(jQuery);






















